<template>
  <fieldset>
    <legend>Jenkins执行器</legend>

    <kv>
      <template #k>
        <div class="k">jenkins:25外网地址
          <remark title="jenkins外网地址">
            可以输入三种格式: http://xxx.com:8081 , //xxx.com:8081 , xxx.com:8081
            <br/>
            <br/>
            <div>1. Jenkins 外网地址 = Jenkins -> 系统设置 -> Jenkins Location -> Jenkins URL</div>
            <div>2. Jenkins -> 全局安全配置 -> 跨站请求伪造保护 -> 启用代理兼容: 选中状态</div>
          </remark>
        </div>
      </template>
      <el-input v-model="$model.hostUrl" chk="*"/>
    </kv>
    <kv label="jenkins 用户名,token">
      <div style=" display: flex;justify-content: space-between;">
        <el-input v-model="$model.userName"/>
        <el-input v-model="$model.password"/>
      </div>
    </kv>

    <kv>
      <template #k>
        <div class="k">使用usePipeline
          <remark>
            <div>
              在新版本的Jenkins中，执行新流水线需要审核，这很不适用于动态生成流水线。此时要关闭该开关。使用Jenkins默认的自由风格！
            </div>
            <div>如果执行新流水线不需要审核，可以打开该开关</div>
          </remark>
        </div>
      </template>
      <el-switch v-model="$model.usePipeline"></el-switch>
    </kv>
    <kv label="">
      <template #k>
        <div class="k">使用sudo
          <remark>
            <div> 如果Jenkins运行账户是 root，则不必使用 sudo。</div>
            <div> docker 运行的 jenkins 一般是 root，关闭该开关！</div>
          </remark>
        </div>
      </template>
      <el-switch v-model="$model.useSudo"></el-switch>
    </kv>

    <kv>
      <template #k>
        是否挂载了宿主机的docker
        <remark>
          判断 是否挂载了宿主机 docker:  -v /var/run/docker.sock:/var/run/docker.sock   -v /usr/bin/docker:/usr/bin/docker <br />
          另外：即使挂载 docker ，如果挂载路径内外一致 ，即 -v /var/jenkins_home:/var/jenkins_home ， 该选项也可以设置为 false！ <br />
        </remark>
      </template>
      <el-switch v-model="$model.runInDocker"></el-switch>
    </kv>
    <kv v-if="$model.runInDocker">
      <template #k>
        <div class="k">挂载宿主机jenkinsHome路径
          <remark title="挂载宿主机jenkinsHome路径">
            * 比较安全的做法是：挂载路径内外一致， 即  -v <el-tag>/var/jenkins_home</el-tag>:/var/jenkins_home <br/>
            * 如果Jenkins挂载了宿主机Docker，且挂载路径内外不一到处， 就一定要配置 jenkins_home 在宿主机的的目录 <br/>
            * 否则，把该字段置空。 <br/>
            * 原因分析：<br/>
            * 如果挂载内外不一致， 如 -v <el-tag>/opt/jenkins/jenkins_home</el-tag>:/var/jenkins_home 。 在 Jeinkins 内部运行 focker ，如这样： <br />
            * docker run -v $pwd/code:/code  ops git-get.sh <br />
            * 那么jenkins里的实际命令是  docker run -v /var/jenkins_home/workspace/xxx/code:/code  ops git-get.sh <br />
            * 而真正执行docker命令的却是宿主机，到宿主机正确的命令应该是： docker run -v <el-tag>/opt/jenkins/jenkins_home</el-tag>/workspace/xxx/code:/code  ops git-get.sh   <br />
            * 所以在真正挂载的时候，就要根据宿主机挂载目录做一个转换，转换函数是： <br/>
            * $pwd 要转换为： <el-tag>/opt/jenkins/jenkins_home</el-tag> + <el-tag> docker中 $pwd 路径去除  /var/jenkins_home 部分</el-tag>
          </remark>
        </div>
      </template>
      <el-input v-model="$model.jenkinsHomePathMountToDocker"></el-input>
    </kv>
  </fieldset>


</template>

<script setup>
/**
 * Created by CodeGenerator  at 2022-04-29 17:00:15
 */




defineOptions({
  name: "jenkins-server",
  inheritAttrs: true,
});

//定义 vue2的this,当前组件
const $self = getCurrentInstance();

//定义 $attrs
const $attrs = useAttrs();


const $props = defineProps({
  id: {type: String},
  action: {type: String}
});

const action_name = $computed(() => {
  return {add: "添加", edit: "修改"}[$props.action]
});
const $model = defineModel({type: Object});

const list = ref();

//定义事件
const $emit = defineEmits(["update:modelValue", "loaded"]);


</script>
